﻿using System;
using System.Runtime.Serialization;
using Texfina.Core.Data;

namespace Texfina.Entity.Sy
{
    /// <summary>
    /// Entidad para la Tabla: SY_Auditoria (SY_Auditoria)
    /// </summary>
    [DataContract()]
    public static class EAudStatic
    {

        #region Campos

        static string _strIdPeriodo = "";
        static string _strIdEmpresa = "";
        static string _strIdUser = "";
        static string _strIdLogon = "";
        static string _strIdLOCAL_ADDR = "";
        static string _strIdREMOTE_ADDR = "";
        static string _strIdREMOTE_HOST = "";
        static string _strIdREMOTE_USER = "";

        #endregion

        #region Atributos


        [DataMember()]
        public static string IdPeriodo
        {
            get { return _strIdPeriodo; }
            set { _strIdPeriodo = value; }
        }

        [DataMember()]
        public static string IdEmpresa
        {
            get { return _strIdEmpresa; }
            set { _strIdEmpresa = value; }
        }

        [DataMember()]
        public static string IdUser
        {
            get { return _strIdUser; }
            set { _strIdUser = value; }
        }

        [DataMember()]
        public static string IdLogon
        {
            get { return _strIdLogon; }
            set { _strIdLogon = value; }
        }

        [DataMember()]
        public static string IdLOCAL_ADDR
        {
            get { return _strIdLOCAL_ADDR; }
            set { _strIdLOCAL_ADDR = value; }
        }

        [DataMember()]
        public static string IdREMOTE_ADDR
        {
            get { return _strIdREMOTE_ADDR; }
            set { _strIdREMOTE_ADDR = value; }
        }

        [DataMember()]
        public static string IdREMOTE_HOST
        {
            get { return _strIdREMOTE_HOST; }
            set { _strIdREMOTE_HOST = value; }
        }

        [DataMember()]
        public static string IdREMOTE_USER
        {
            get { return _strIdREMOTE_USER; }
            set { _strIdREMOTE_USER = value; }
        }

        #endregion

        public static EAuditoria CreateEntity<T>(string tipoevento, string primarykey,string dsevento, T EOriginal, T EUpdate, Exception e)
        {
            EAuditoria objE = new EAuditoria();
            objE.IdPeriodo = EAudStatic.IdPeriodo;
            objE.IdEmpresa = EAudStatic.IdEmpresa;
            objE.IdEvento = "";
            objE.FeEvento = DateTime.Now;
            objE.IdTipoEvento = tipoevento;
            objE.IdTabla = typeof(T).Name;
            objE.DsPrimaryKey = primarykey;
            switch (tipoevento)
            {
                case "002":
                    if (EOriginal != null && EUpdate != null)
                        objE.DsEvento = DataHelper.GetCamposUpdate<T>(EOriginal, EUpdate, typeof(T)) + (dsevento!=""?" - " + dsevento:"");
                    else
                        objE.DsEvento = "" + (dsevento!=""?" - " + dsevento:"");
                    break;
                case "004":
                    if (e != null)
                        objE.DsEvento = e.Message + (dsevento!=""?" - " + dsevento:"");
                    else
                        objE.DsEvento = "" + (dsevento != "" ? " - " + dsevento : "");
                    break;
                default:
                    objE.DsEvento = dsevento;
                    break;

            }
            objE.IdUser = EAudStatic.IdUser;
            objE.IdLogon = EAudStatic.IdLogon;
            objE.IdLOCAL_ADDR = EAudStatic.IdLOCAL_ADDR;
            objE.IdREMOTE_ADDR = EAudStatic.IdREMOTE_ADDR;
            objE.IdREMOTE_HOST = EAudStatic.IdREMOTE_HOST;
            objE.IdREMOTE_USER = EAudStatic.IdREMOTE_USER;

            return objE;

        }

    }
}
